/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package business;

import dao.CursoDao;
import dominio.Curso;
import dominio.Profesor;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;

/**
 *
 * @author vanessa
 */
public class CursoBo {

    private CursoDao dao = new CursoDao();

    public Curso crearCurso(int idGrado, String nombreCurso) {
        Curso c = dao.crearCurso(idGrado, nombreCurso);
        return c;
    }

    public Collection<Curso> encontrarCursosPorGrado(int grado) {
        Collection<Curso> c = dao.encontrarCursosPorGrado(grado);
        return c;
    }

    public Collection<Curso> encontrarCursos() {
        Collection<Curso> c = dao.encontrarCursos();
        return c;
    }

    public Collection<Curso> encontrarCursosSinDirector() {
        Collection<Curso> c = dao.encontrarCursosSinDirector();
        return c;
    }

    public void borrarCurso(String nombreCurso) {
        dao.borrarCurso(nombreCurso);
    }

    public Collection<Curso> encontrarCursosJoinProfesor(int grado) {
        Collection<Curso> c = dao.encontrarCursosJoinProfesor(grado);
        return c;
    }

    public int asignarDirectorAutomatico(Iterator<Profesor> pnd, Iterator<Curso> csd) { //encontrar todos los Cursos
        int cursosActualizados = dao.asignarDirectorAutomatico(pnd, csd);
        return cursosActualizados;
    }
    
    public Curso asignarDirectorManual(String nombreCurso, Long docProfesor){
        Curso c=dao.asignarDirectorManual(nombreCurso, docProfesor);
        return c;
    }
/***
 * Metodo hecho por alex para retornar la lista de cursos por grado
 * @param idGrado
 * @return
 */
    public List consultarCursosGrado(int idGrado) {
        List results;
        results = dao.encontrarCursosGrado(idGrado);
        return results;
    }

    public Curso encontrarCursoPorNombre(String nombreCurso) {
        EntityManagerFactory emf =
        Persistence.createEntityManagerFactory("SiaPersistencia");
        EntityManager em = emf.createEntityManager();
        dao = new CursoDao(em);
        Curso curso = null;
        curso = dao.encontrarCursoPorNombre(nombreCurso);
        em.close(); //quitar cuando se tenga montado el serv
        emf.close();//quitar cuando se tenga montado el serv
        return curso;
    }

    public void actualizarCurso(Curso curso) {
        EntityManagerFactory emf = Persistence.createEntityManagerFactory("SiaPersistencia");
        EntityManager em = emf.createEntityManager();
        dao = new CursoDao(em);
        dao.actualizarCurso(curso);
        em.close(); //quitar cuando se tenga montado el serv
        emf.close();//quitar cuando se tenga montado el serv
    }
}
